// 1.2 c++继承- 访问控制和继承

/**
 * 面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征
 * c++继承
 * 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类，这使得创建和维护一个应用程序变得更容易。这样做，也达到了重用代码功能和提高执行效率的效果。
 * 
 * 当创建一个类时，您不需要重新编写新的数据成员和成员函数，只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类，新建的类称为派生类。
 * 
 * 继承代表了 is a 关系。例如，哺乳动物是动物，狗是哺乳动物，因此，狗是动物，等等。
                                animal
                                 eat()
           基类--------->        sleep()
 
                                  Dog
           派生类-------->        bark()
 
 * 代码如下:
      //  基类
      class animal{
        // eat() 函数
        // sleep() 函数
      }

      // 派生类
      class Dog : public Animal{
        // bark() 函数
      }
 * 
 * ------------------------------
 * 访问控制和继承
 * 派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问，则应在基类中声明为 private。
 * 
 * 我们可以根据访问权限总结出不同的访问类型，如下所示：

      访问	     public	  protected	   private
      同一个类	  yes	      yes	         yes
      派生类	    yes	      yes	         no
      外部的类	  yes	      no	         no

 * 一个派生类继承了所有的基类方法，但下列情况除外：
     基类的构造函数、析构函数和拷贝构造函数。
     基类的**重载运算符**。
     基类的友元函数。
 *
*/

#include <iostream>

int main(void)
{
  
  printf("-----------------end-----------------\n");
  // system("pause");
  return 0;
}